/*
 * PagFormularioTipoAtividade.java
 * 
 * Projeto: Kruskal - SRAC
 * LEDS - Laboratório de Engenharia e Desenvolvimento de Software
 * IFES - Instituto Federal do Espírito Santo - Campus Serra.
 */
package srac.controleatividades.cih;

import java.util.ArrayList;
import java.util.List;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.*;
import srac.controleatividades.cci.CtrlInterno;
import srac.controleatividades.cdp.Aluno;
import srac.controleatividades.cdp.StatusSubmissao;

public class PagFormularioAluno extends GenericForwardComposer {

    private CtrlInterno ctrl = CtrlInterno.getInstance();
    private Window winFormularioAluno;
    private Textbox email;
    private Textbox nome;
    private Textbox senha;
    private Textbox matricula;
    private Textbox cpf;
    private Combobox statusAluno;
    private Aluno obj;
    private Button salvarAluno;
    private String matriculaAntiga;
    private String senhaAntiga;
    private int MODO;

    @Override
    public void doAfterCompose(Component comp) throws Exception {
        super.doAfterCompose(comp);
        
        List<StatusSubmissao> l = new ArrayList<StatusSubmissao>();
        l.add(StatusSubmissao.ATIVIDADES_PENDENTES);
        l.add(StatusSubmissao.INAPTO);
        statusAluno.setModel(new ListModelList(l, true)); //Popula a combobox
        statusAluno.setReadonly(true);
    }

    public void onCreate$winFormularioAluno() {

        //if feito para verificar se existe algum usuario logado, se nao existir eh redirecionado para o login
        if (Executions.getCurrent().getSession().getAttribute("usuario") == null) {
            Executions.sendRedirect("/");
            winFormularioAluno.detach();
        }
        else {
        MODO = (Integer) arg.get("tipo");
            if (MODO != ctrl.SALVAR) {
                obj = (Aluno) arg.get("obj");
                matriculaAntiga = obj.getMatricula();
                senhaAntiga = obj.getUsuario().getSenha();
                preencherTela();
                if (MODO == ctrl.CONSULTAR) {
                    this.salvarAluno.setVisible(false);
                    bloquearTela();
                }
            }
        }
    }

    private void preencherTela() {
        nome.setText(obj.getNome());
        email.setText(obj.getEmail());
        matricula.setText(obj.getMatricula());
        cpf.setText(obj.getCpf());
        senha.setText(obj.getUsuario().getSenha());
        if (obj.getStatusSubmissao() != null) {
            ((ListModelList) statusAluno.getModel()).addToSelection(obj.getStatusSubmissao());
        }
    }

    private void bloquearTela() {
        nome.setDisabled(true);
        email.setDisabled(true);
        matricula.setDisabled(true);
        cpf.setDisabled(true);
        senha.setDisabled(true);
        statusAluno.setDisabled(true);
    }

    public void onClick$salvarAluno(Event event) {
        Aluno a = null;
        String msg = valido();
        if (msg.trim().equals("")) {
            if (MODO == ctrl.EDITAR) {
                if(!matriculaAntiga.equals(matricula.getText()))
                {
                    if(!ctrl.verificaExistenciaUsuario(matricula.getText()))
                    {
                        if(!senhaAntiga.equals(senha.getText()))
                        {
                            obj.getUsuario().setSenhaCriptografar(senha.getText());
                        }
                        obj.setNome(nome.getText());
                        obj.setEmail(email.getText());
                        obj.setMatricula(matricula.getText());
                        obj.setCpf(cpf.getText());
                        obj.setStatusSubmissao((StatusSubmissao)statusAluno.getSelectedItem().getValue());
                        obj.getUsuario().setLogin(matricula.getText());
                        a = ctrl.alterarAluno(obj); //Atera o aluno
                    }
                    else
                    {
                        Messagebox.show("Matrícula já cadastrada!", "Informe:", 0, Messagebox.EXCLAMATION);
                    }
                }
                else
                {
                    if(!senhaAntiga.equals(senha.getText()))
                    {
                        obj.getUsuario().setSenhaCriptografar(senha.getText());
                    }
                    obj.setNome(nome.getText());
                    obj.setEmail(email.getText());
                     obj.setCpf(cpf.getText());
                    obj.setStatusSubmissao((StatusSubmissao)statusAluno.getSelectedItem().getValue());
                    obj.getUsuario().setLogin(matricula.getText());
                    a = ctrl.alterarAluno(obj); //Atera o aluno
                }
                if (a != null) {
                    winFormularioAluno.onClose();
                }
            } 
            else { //Incluir
                ArrayList<Object> list = new ArrayList<Object>();
                list.add(nome.getText());
                list.add(email.getText());
                list.add(matricula.getText());
                list.add(cpf.getText());
                list.add(senha.getText());
                list.add(statusAluno.getSelectedItem().getValue());
                
                if(!ctrl.verificaExistenciaUsuario(matricula.getText()))
                {
                    a = ctrl.incluirAluno(list); //Inclui o aluno
                }
                else
                {
                    Messagebox.show("Matrícula já cadastrada!", "Informe:", 0, Messagebox.EXCLAMATION);
                }
                if (a != null) {
                    winFormularioAluno.onClose();
                }
            }

        } else {
            
            Messagebox.show(msg, "Informe:", 0, Messagebox.EXCLAMATION);
        }
    }

    public void onClick$voltar(Event event) {
        winFormularioAluno.onClose();
    }
    
    

    public void limparCampos() {
        nome.setText("");
        email.setText("");
        matricula.setText("");
        cpf.setText("");
        senha.setText("");
        statusAluno.setSelectedItem(null);
    }

    private String valido() { //Verifica se esta faltando algum campo
        String msg = "";
        if (nome.getText().trim().equals("")) {
            msg += "- Nome\n";
        }
        if (email.getValue() == null) {
            msg += "- Email\n";
        }
        if (matricula.getValue() == null) {
            msg += "- Matricula\n";
        }
        if (cpf.getValue() == null) {
            msg += "- CPF\n";
        }
        if (senha.getValue() == null) {
            msg += "- Senha\n";
        }
        if (statusAluno.getSelectedItem() == null) {
            msg += "- Status do Aluno\n";
        }

        return msg;
    }
}
